home *** CD-ROM | disk | FTP | other *** search
/ Motor Sport Digital Archive Collection 1960s / Motor Sport Digital Archive Collection 1960s.iso / main.swf / scripts / mx / rpc / xml / SimpleXMLDecoder.as < prev    next >
Encoding:
Text File  |  2008-05-21  |  4.5 KB  |  149 lines

  1. package mx.rpc.xml
  2. {
  3.    import flash.xml.XMLNode;
  4.    import flash.xml.XMLNodeType;
  5.    import mx.collections.ArrayCollection;
  6.    import mx.utils.ObjectProxy;
  7.    
  8.    public class SimpleXMLDecoder
  9.    {
  10.       private var makeObjectsBindable:Boolean;
  11.       
  12.       public function SimpleXMLDecoder(param1:Boolean = false)
  13.       {
  14.          super();
  15.          this.makeObjectsBindable = param1;
  16.       }
  17.       
  18.       public static function simpleType(param1:Object) : Object
  19.       {
  20.          var _loc2_:Object = null;
  21.          var _loc3_:String = null;
  22.          var _loc4_:String = null;
  23.          _loc2_ = param1;
  24.          if(param1 != null)
  25.          {
  26.             if(param1 is String && String(param1) == "")
  27.             {
  28.                _loc2_ = param1.toString();
  29.             }
  30.             else if(isNaN(Number(param1)) || param1.charAt(0) == "0" || param1.charAt(0) == "-" && param1.charAt(1) == "0" || param1.charAt(param1.length - 1) == "E")
  31.             {
  32.                _loc3_ = param1.toString();
  33.                _loc4_ = _loc3_.toLowerCase();
  34.                if(_loc4_ == "true")
  35.                {
  36.                   _loc2_ = true;
  37.                }
  38.                else if(_loc4_ == "false")
  39.                {
  40.                   _loc2_ = false;
  41.                }
  42.                else
  43.                {
  44.                   _loc2_ = _loc3_;
  45.                }
  46.             }
  47.             else
  48.             {
  49.                _loc2_ = Number(param1);
  50.             }
  51.          }
  52.          return _loc2_;
  53.       }
  54.       
  55.       public function decodeXML(param1:XMLNode) : Object
  56.       {
  57.          var _loc2_:Object = null;
  58.          var _loc3_:Boolean = false;
  59.          var _loc4_:Array = null;
  60.          var _loc5_:Object = null;
  61.          var _loc6_:String = null;
  62.          var _loc7_:uint = 0;
  63.          var _loc8_:XMLNode = null;
  64.          var _loc9_:String = null;
  65.          var _loc10_:Object = null;
  66.          var _loc11_:Object = null;
  67.          _loc3_ = false;
  68.          if(param1 == null)
  69.          {
  70.             return null;
  71.          }
  72.          _loc4_ = param1.childNodes;
  73.          if(_loc4_.length == 1 && _loc4_[0].nodeType == XMLNodeType.TEXT_NODE)
  74.          {
  75.             _loc3_ = true;
  76.             _loc2_ = SimpleXMLDecoder.simpleType(_loc4_[0].nodeValue);
  77.          }
  78.          else if(_loc4_.length > 0)
  79.          {
  80.             _loc2_ = {};
  81.             if(makeObjectsBindable)
  82.             {
  83.                _loc2_ = new ObjectProxy(_loc2_);
  84.             }
  85.             _loc7_ = 0;
  86.             while(_loc7_ < _loc4_.length)
  87.             {
  88.                _loc8_ = _loc4_[_loc7_];
  89.                if(_loc8_.nodeType == XMLNodeType.ELEMENT_NODE)
  90.                {
  91.                   _loc9_ = NamespaceUtil.getLocalName(_loc8_);
  92.                   _loc10_ = decodeXML(_loc8_);
  93.                   _loc11_ = _loc2_[_loc9_];
  94.                   if(_loc11_ != null)
  95.                   {
  96.                      if(_loc11_ is Array)
  97.                      {
  98.                         _loc11_.push(_loc10_);
  99.                      }
  100.                      else if(_loc11_ is ArrayCollection)
  101.                      {
  102.                         ArrayCollection(_loc11_).addItem(_loc10_);
  103.                      }
  104.                      else
  105.                      {
  106.                         _loc11_ = [_loc11_];
  107.                         _loc11_.push(_loc10_);
  108.                         if(makeObjectsBindable)
  109.                         {
  110.                            _loc11_ = new ArrayCollection(_loc11_ as Array);
  111.                         }
  112.                         _loc2_[_loc9_] = _loc11_;
  113.                      }
  114.                   }
  115.                   else
  116.                   {
  117.                      _loc2_[_loc9_] = _loc10_;
  118.                   }
  119.                }
  120.                _loc7_++;
  121.             }
  122.          }
  123.          _loc5_ = param1.attributes;
  124.          for(_loc6_ in _loc5_)
  125.          {
  126.             if(!(_loc6_ == "xmlns" || _loc6_.indexOf("xmlns:") != -1))
  127.             {
  128.                if(_loc2_ == null)
  129.                {
  130.                   _loc2_ = {};
  131.                   if(makeObjectsBindable)
  132.                   {
  133.                      _loc2_ = new ObjectProxy(_loc2_);
  134.                   }
  135.                }
  136.                if(_loc3_ && !(_loc2_ is ComplexString))
  137.                {
  138.                   _loc2_ = new ComplexString(_loc2_.toString());
  139.                   _loc3_ = false;
  140.                }
  141.                _loc2_[_loc6_] = SimpleXMLDecoder.simpleType(_loc5_[_loc6_]);
  142.             }
  143.          }
  144.          return _loc2_;
  145.       }
  146.    }
  147. }
  148.  
  149.